วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
UI ของ Event Bridge เปลี่ยนไปมาก จึงทำการเขียนบทความใหม่ ดังนั้นโปรดดูที่บทความนี้
【Update】วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
ครั้งนี้จะมาแนะนำวิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge ต่อจากบทความ วิธีการรันคำสั่ง Shutdown จาก Management Console โดยไม่ต้องเข้า Windows
สิ่งที่ต้องมี
ให้ทำการรันคำสั่ง Shutdown จาก Management Console โดยไม่ต้องเข้า Windows ก่อน สามารถดูได้ที่คำอธิบายและลิงก์ด้านล่างนี้เลย
※ วิธีการรันคำสั่ง Shutdown จาก Management Console โดยไม่ต้องเข้า Windows
- หมายเหตุ : บทความนี้มีขั้นตอนทั้งหมด 6 หัวข้อ [ ✅ = ต้องทำ | ❌ = ไม่ต้องทำ ]
- ✅ การสร้าง Role ใน IAM
- ✅ การสร้าง Key Pair, Instance, Elastic IP ใน EC2
- การสร้าง Key Pair
- การสร้าง Microsoft Windows Server 2019 Base
- Elastic IP (EIP)
- ✅ การ Connect to Instance เพื่อเข้าใช้งาน Windows ผ่านไฟล์ RDP
- ✅ การ Run Command ใน Systems Manager
- ❌ การ Run Command ผ่าน PowerShell Script ใน Systems Manager
- ❌ การ Run Command อื่นๆ ผ่าน PowerShell Script ใน Systems Manager
เมื่อทำวิธีตามด้านบนนี้เสร็จเรียบร้อยแล้ว ให้เริ่มทำหัวข้อถัดไปได้เลย
การสร้าง Rule ใน IAM
ทำสร้าง Role ใน IAM ก่อน เพื่อนำไปใช้ในขั้นตอนถัดไปของ วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
เข้ามาที่ Service IAM โดยค้นหา?︎ IAM
» เลือกIAM
มาที่เมนูด้านซ้าย เลือกRoles
คลิกCreate role
การตั้งค่า Step 1 : Select trusted entity นี้คือ:
Trusted entity type
» เลือกAWS service
Use case
» Common use cases:EC2
» คลิกNext
การตั้งค่า Step 2 : Add permissions นี้คือ:
Add permissions
» ค้นหา Permissions policies:?︎ AmazonSSMAutomationRole
+ Enter
» Check✅
ที่ชื่อ AmazonSSMAutomationRole
» คลิกNext
การตั้งค่า Step 3 : Name, review, and create นี้คือ:
» Role name:tinnakorn-win-shutdown-ssm-automation-role
(ชื่ออะไรก็ได้)
เลื่อนลงมาด้านล่างสุด คลิกCreate role
ค้นหาชื่อ Role ที่สร้างไปเมื่อสักครู่นี้:?︎ tinnakorn-win-shutdown-ssm-automation-role
+ Enter
จากนั้นคลิกที่ Role name ของเรา
คลิกที่หัวข้อTrust relationships
และคลิกEdit trust policy
แก้ไข Code ที่ "Service": โดยการเพิ่ม"ssm.amazonaws.com"
ลงไป
เพื่อให้ง่ายต่อการแก้ไข แนะนำให้ลบ Code เก่าในช่อง Edit trust policy ออกให้หมดและ Copy Code ด้านล่างนี้วางลงไปแทนที่
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ec2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
เลื่อนลงมาด้านล่างสุด คลิกUpdate policy
มาดูที่หัวข้อTrust relationships
อีกครั้ง จะเห็นว่าแก้ไข Code เสร็จเรียบร้อยแล้ว
วิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge
เราจะสาธิตวิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge โดยจะใช้ชื่อว่าtinnakorn-win-shutdown
ซึ่งเป็นชื่อเดียวกับ Instance นั่นเอง
ค้นหา?︎ Amazon EventBridge
» เลือกAmazon EventBridge
เมื่อเข้ามาที่ Amazon EventBridge แล้ว มาที่เมนูด้านซ้าย เลือกRules
มาที่หัวข้อ Rules คลิกCreate rule
เมื่อเข้ามาหน้า Create rule แล้ว สามารถดูการตั้งค่านี้เป็นแนวทางได้เลย
การตั้งค่าหัวข้อ Name and description นี้คือ:
» Name:tinnakorn-win-shutdown
» Description - optional:tinnakorn-win-shutdown
การตั้งค่าหัวข้อ Define pattern นี้คือ:
» Build or customize an Event Pattern or set a Schedule to invoke Targets.:⚫ Schedule
» เลือก⚫ Cron expression
: ตามด้วยใส่วันที่และเวลาที่เราต้องการลบ:50 10 * * ? *
(เวลาประเทศไทยคือ17:50
นาที)
» เมื่อใส่วันที่และเวลาแล้ว จะมี Next 10 trigger date(s) ปรากฎขึ้นมา เลือก:Local time zone ▼
สามารถศึกษาเรื่อง Cron expression เพิ่มเติมได้ที่ : https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html
มาที่หน้า EC2 Instance ของเรา คลิก❐
เพื่อ Copy Instance ID แล้วนำไปบันทึกไว้ที่ Notepad ก่อนก็ได้
การตั้งค่าหัวข้อ Select targets นี้คือ:
Target
» เลือกSystems Manager Run Command ▼
» Document:AWS-RunPowerShellScript ▼
» Target key*:InstanceIds
» Target value(s)*:i-*****************
+ คลิกAdd
(เมื่อใส่ Instance ID ที่ Copy มาแล้วอย่าลืมคลิก Add)
ในส่วนของ ▼ Configure automation parameter(s) เราสามารถใส่คำสั่งอะไรลงไปก็ได้
ในตัวอย่างนี้จะใส่คำสั่ง Shutdown Windows โดยอัตโนมัติ สามารถทำได้ดังนี้
・3600 วินาที = 1 ชั่วโมง
・1800 วินาที = 30 นาที
・900 วินาที = 15 นาที
・600 วินาที = 10 นาที
・300 วินาที = 5 นาที
・60 วินาที = 1 นาที
ในตัวอย่างนี้จะสาธิตแค่เวลา 30 วินาที ให้ใส่คำสั่งตามนี้และกำหนดเวลาของคุณเอง
» เลือก⚫ Constant
» Commands:shutdown /s /t 30
+ คลิกAdd
(เมื่อใส่คำสั่งไปแล้วอย่าลืมคลิก Add)
⚫ Create a new role for this specific resource:tinnakorn-win-shutdown_Amazon_EventBridge_Invoke_Run_Command
ตัวอย่างนี้จะใส่ชื่อ role ตามด้านล่างโดยการเติมชื่อtinnakorn-win-shutdown
ข้างหน้าและลบเลขข้างหลังอออก (ชื่อ role นี้จะใส่เป็นอะไรก็ได้ที่ทำให้เราจำง่ายที่สุด)
tinnakorn-win-shutdown_Amazon_EventBridge_Invoke_Run_Command
เลื่อนลงมาด้านล่างสุด คลิกCreate
เมื่อมาหน้านี้แล้ว ให้คลิกที่ชื่อ Rule ของเรา
จากนั้นตรวจสอบข้อมูลที่เราได้ตั้งค่าไว้ในหน้านี้
เมื่อตั้งค่าเสร็จแล้ว รอจนกว่าจะถึงเวลาที่เราตั้งค่าไว้ ในตัวอย่างนี้เวลา Shutdown จะอยู่ที่ 30 วินาที และเวลา Stop Instance อยู่ที่ 17.50 น.
เมื่อเวลามาถึง 17.50 น. แล้วก็รอไปอีก 30 วินาทีนั่นเอง
เมื่อ Windows ถูก Shutdown ตามเวลาที่กำหนดไว้แล้ว มาดูที่หน้า Instance State จะมีสถานะเป็นStopped
การตรวจสอบข้อมูลการใช้งานย้อนหลังด้วย CloudTrail
เมื่อเราได้ดำเนินการสิ่งต่างๆ ใน AWS นี้ไปแล้ว เราสามารถเข้ามาตรวจสอบสิ่งที่ดำเนินการย้อนหลังได้ที่ CloudTrail
ค้นหา?︎ CloudTrail
» เลือกCloudTrail
เมื่อเข้ามาที่ CloudTrail แล้ว มาที่เมนูด้านซ้าย เลือกEvent history
มาที่ Event history ในส่วนนี้เราสามารถเลือกดูข้อมูลย้อนหลังที่ดำเนินการไปก่อนหน้านี้ได้
ตัวอย่างนี้จะเข้าไปดูที่SendCommand
เมื่อคลิกเข้าไปแล้วสามารถดูข้อมูลได้เลย
การลบ Features ที่สร้างใน Services ของ AWS
เมื่อเราสร้างและใช้งาน Features ต่างๆ ใน Services ของ AWS ไปแล้ว เราสามารถลบออกได้ด้วยตัวเองง่ายๆ สามารถทำตามขั้นตอนเหล่านี้ได้เลย
※สิ่งที่จะลบออกคือ:
- Amazon EventBridge
- IAM
- Roles
- Policies
- Instance
- Security Groups
- Key Pairs
- Elastic IP
การลบ Rule ใน Amazon EventBridge
มาที่หน้า Amazon EventBridge ทำการลบดังนี้
» เลือกRules
» คลิก⚫
ที่ชื่อของเรา
» คลิกDelete
» คลิกDelete
การลบ Roles กับ Policies ใน IAM
เข้ามาที่ Service IAM โดยค้นหา?︎ IAM
» เลือกIAM
จากนั้นเริ่มทำการลบ Features Roles กับ Policies ใน Service IAM ได้เลย
※การลบ Roles ใน IAM
Roles นี้จะมี 3 อัน คือ:
tinnakorn-win-shutdown-ec2-role tinnakorn-win-shutdown-ssm-automation-role tinnakorn-win-shutdown_Amazon_EventBridge_Invoke_Run_Command
Roletinnakorn-win-shutdown-ec2-role
นี้เป็นของ : วิธีการรันคำสั่งจาก Management Console โดยไม่ต้องเข้า Windows ให้ทำการลบไปพร้อมกับขั้นตอนนี้ได้เลย
ให้ทำการลบ Roles ตามนี้
① มาที่เมนูด้านซ้าย เลือกRoles
② ค้นหาชื่อ role ที่สร้างไว้ ถ้าในชื่อมีข้อความซ้ำกันอยู่ เช่น?︎ tinnakorn
ให้พิมพ์ไปแค่นี้ก็ได้ ซึ่ง Filter จะแสดงชื่อที่มีให้เรา จากนั้นกด Enter
③ เมื่อตรวจสอบแล้วชื่อ Roles ทั้งหมดเป็นของเราให้ Check✅
ที่หน้า Role name ได้เลย
④ คลิกDelete
ใส่คำว่าDelete
ลงไป จากนั้นคลิกDelete
ในกรณีที่ต้องการลบทีละอันก็ให้ทำเหมือนกัน แค่เปลี่ยนจาก Delete เป็นชื่อของ Role ที่ต้องการลบ
※การลบ Policies ใน IAM
ทำการลบ Policies ตามนี้
① มาที่เมนูด้านซ้าย เลือกPolicies
② ค้นหาโดยใส่ชื่อเดียวกับที่เราสร้าง role ไว้ หรือใส่ข้อความที่มีอยู่ในชื่อก็ได้ เช่น?︎ tinnakorn
+ Enter
③ ตรวจสอบชื่อของเราและ Check✅
ที่ชื่อของเรา
④ คลิกActions ▼
⑤ เลือกDelete
คัดลอกชื่อในช่องสีแดงมาวางในช่องด้านล่าง จากนั้นคลิกDelete
การลบ Instance, Security Groups, Key Pairs และ EIP ใน EC2
เข้ามาที่ Service EC2 โดยค้นหา?︎ EC2
» เลือกEC2
จากนั้นเริ่มทำการลบ Features Instance, Security Groups, Key Pairs และ Elastic IP ใน Service EC2 ได้เลย
※การลบ Instance ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Instance เลือกInstance
มาที่หน้า Instance ของเรา คลิกInstance state ▼
เลือกTerminate instance
คลิกTerminate
รอจนกว่า Instance state เปลี่ยนเป็น ⊝Terminated
แบบนี้
※การลบ Security Groups ใน EC2
ก่อนที่เราจะทำการลบ Security Groups เราต้องทำการ Terminate Instance จนกว่า Instance State เปลี่ยนเป็น ⊝Terminated
จึงจะสามารถลบ Security Groups ได้ เพราะว่าถ้าการ Terminate ไม่เสร็จสมบูรณ์ ก็จะทำให้มีแจ้งเตือน Error และไม่สามารถลบได้นั่นเอง
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกSecurity Groups
ค้นหาชื่อ Security Group ของเรา โดยใส่ชื่อเดียวกับ Instance ของเราลงไป
ตัวอย่างนี้คือ?︎ tinnakorn-win-shutdown
+ Enter ตามด้วย Check✅
ที่ชื่อของเรา
คลิกActions ▼
เลือกDelete security groups
คลิกDelete
※การลบ Key Pairs ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกKey Pairs
ค้นหาชื่อ Key Pairs ของเรา โดยใส่ชื่อเดียวกับ Instance ของเราลงไป
ตัวอย่างนี้คือ?︎ tinnakorn-win-shutdown
+ Enter ตามด้วย Check✅
ที่ชื่อของเรา
คลิกที่Actions ▼
เลือกDelete
พิมพ์คำว่าDelete
ลงไป ตามด้วยคลิกDelete
※การลบ Elastic IP (EIP) ใน EC2
มาที่เมนูด้านซ้ายตรงหัวข้อ ▼ Network & Security เลือกElastic IPs
การลบ EIP นี้คือ
» ค้นหาชื่อ Elastic IP addresses ของเรา ตัวอย่างนี้คือ?︎ tinnakorn-win-shutdown
+ Enter
» Check✅
ที่ชื่อของเรา (โดยปกติจะ Check ให้อยู่แล้ว)
» มาที่ด้านขวา คลิกActions ▼
» เลือกRelease Elastic IP addresses
คลิกRelease
สรุป
ในบทความนี้ก็ได้สาธิตวิธีการ Shutdown Windows ด้วย Schedule จาก EventBridge เรียบร้อยแล้ว ซึ่งการตั้งค่านี้ จะช่วยให้เราสามารถ Shutdown ตามวัน เวลาที่เรากำหนดได้โดยอัตโนมัติ
ตัวอย่างเช่น ถ้าเราไม่ได้ใช้งานเซิร์ฟเวอร์ Instance ในตอนกลางคืน แต่บางครั้งอาจจะลืม Shutdown Windows ซึ่งเราสามารถ Shutdown Windows ด้วยการตั้งค่านี้ได้ตลอดเวลา นอกจากนี้ยังช่วยประหยัดค่าใช้จ่ายให้เรา และทำให้เราสามารถใช้งาน AWS ได้ในราคาที่ถูกลงอีกด้วย
บทความที่เกี่ยวข้อง
- วิธีการรันคำสั่งจาก Management Console โดยไม่ต้องเข้า Windows
- วิธีเปลี่ยนการดำเนินการ Stop/Terminate เมื่อ Shutdown EC2 Instance
- วิธีตั้งค่ากำหนดการ Start EC2 Instance อัตโนมัติด้วย Amazon EventBridge
- วิธีตั้งค่ากำหนดการ Stop EC2 Instance อัตโนมัติด้วย Amazon EventBridge
- การ Shutdown ระบบปฏิบัติการ, Terminate, Stop, Restart ของ EC2